1583. Тир

 

Вы поспорили с другом, что он не попадет в мишень, сделав n выстрелов. Вероятность попадания друга в мишень равна accuracy.

Найти максимальное количество выстрелов, при котором Вам есть смысл спорить. Вам есть смысл спорить, если вероятность того, что Ваш друг попадет в цель хотя бы одним из n выстрелов, строго меньше 50%.

 

Вход. Каждая строка содержит целое число accuracy (1 ≤ accuracy ≤ 100) – вероятность попадания друга в мишень.

 

Выход. Для каждого теста в отдельной строке вывести максимальное количество выстрелов, при котором Вам есть смысл спорить.

 

Пример входа

40

20

50

1

 

Пример выхода

1

3

0

68

 

 

РЕШЕНИЕ

вероятность

 

Анализ алгоритма

Вероятность того, что друг не попадет в мишень с одного выстрела, равна 1 – accuracy /100.0. Вероятность того, что друг не попадет в мишень сделав n выстрелов, равна

(1 – accuracy /100.0)n

Ответом задачи будет такое наименьшее n, для которого указанная выше вероятность станет не больше 0.5.

 

Реализация алгоритма

Функция profitableBetвозвращает максимальное количество выстрелов, при котором Вам есть смысл спорить.

 

int profitableBet(int accuracy)

{

  double miss = 1 - accuracy / 100.0,prob = miss;

  int n = 0;

  while (prob > 0.5) n++,prob *= miss;

  return n;

}

 

Основная часть программы.

 

while(scanf("%d",&accuracy) == 1)

{

  res = profitableBet(accuracy);

  printf("%d\n",res);

}